package com.by.cloud.model.vo.picture;

import cn.hutool.core.bean.BeanUtil;
import com.by.cloud.model.entity.Picture;
import com.by.cloud.model.vo.user.UserVo;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 图片响应类
 *
 * @author linweirui
 * @date 2024/12/13 10:21
 */
@Data
public class PictureVo implements Serializable {
    /**
     * id
     */
    private Long picId;

    /**
     * 图片 url
     */
    private String picUrl;

    /**
     * 图片名称
     */
    private String picName;

    /**
     * 简介
     */
    private String introduction;

    /**
     * 标签
     */
    private List<String> tags;

    /**
     * 分类
     */
    private String category;

    /**
     * 文件体积
     */
    private Long picSize;

    /**
     * 图片宽度
     */
    private Integer picWidth;

    /**
     * 图片高度
     */
    private Integer picHeight;

    /**
     * 图片比例
     */
    private Double picScale;

    /**
     * 图片格式
     */
    private String picFormat;

    /**
     * 用户 id
     */
    private Long userId;

    /**
     * 创建时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;

    /**
     * 编辑时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime editTime;

    /**
     * 更新时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;

    /**
     * 创建用户信息
     */
    private UserVo userVo;

    private static final long serialVersionUID = 1L;

    /**
     * 封装类转实体对象
     *
     * @param vo 图片vo
     * @return
     */
    public static Picture voToObj(PictureVo vo) {
        if (vo == null) {
            return null;
        }
        return BeanUtil.copyProperties(vo, Picture.class);
    }

    /**
     * 实体对象转vo
     *
     * @param picture 图片实体对象
     * @return
     */
    public static PictureVo objToVo(Picture picture) {
        if (picture == null) {
            return null;
        }
        return BeanUtil.copyProperties(picture, PictureVo.class);
    }
}
